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

AI生成内容——JavaScript中的Promise、async和wait

一、Promise

*1. 概念

  • Promise 是 JavaScript 中处理异步操作的一种对象,它表示一个异步操作的最终完成(或失败)及其结果值。一个 Promise 对象处于以下三种状态之一:
    • Pending(进行中):初始状态,既不是成功,也不是失败状态。
    • Fulfilled(已成功):意味着操作成功完成。
    • Rejected(已失败):意味着操作失败。

*2. 创建 Promise 对象

let myPromise = new Promise((resolve, reject) => {// 异步操作setTimeout(() => {let success = true;if (success) {resolve('操作成功');} else {reject('操作失败');}}, 1000);
});
  • 在上述代码中,new Promise() 接收一个函数作为参数,该函数接收两个参数 resolvereject,分别用于将 Promise 对象的状态从 Pending 转变为 FulfilledRejected

*3. 使用 Promise 对象

myPromise.then((result) => {console.log(result); // 操作成功时的处理}).catch((error) => {console.error(error); // 操作失败时的处理});
  • then() 方法用于添加成功状态的回调函数,当 Promise 的状态变为 Fulfilled 时会调用该函数并传入结果。
  • catch() 方法用于添加失败状态的回调函数,当 Promise 的状态变为 Rejected 时会调用该函数并传入错误信息。

*4. 链式调用

  • Promise 可以进行链式调用,以便处理多个异步操作:
let firstPromise = new Promise((resolve, reject) => {setTimeout(() => {resolve('第一个操作完成');}, 1000);
});firstPromise.then((result) => {console.log(result);return new Promise((resolve, reject) => {setTimeout(() => {resolve('第二个操作完成');}, 1000);});}).then((result) => {console.log(result);}).catch((error) => {console.error(error);});
  • 在这个例子中,第一个 then() 处理第一个 Promise 的结果,并返回一个新的 Promise,后续的 then() 会处理新 Promise 的结果。

*5. Promise.all 和 Promise.race

  • Promise.all 用于处理多个 Promise 实例,当所有的 Promise 都完成时,才会执行 then() 方法:
let promise1 = new Promise((resolve, reject) => {setTimeout(() => {resolve('Promise 1 完成');}, 1000);
});
let promise2 = new Promise((resolve, reject) => {setTimeout(() => {resolve('Promise 2 完成');}, 2000);
});Promise.all([promise1, promise2]).then((results) => {console.log(results); // ['Promise 1 完成', 'Promise 2 完成']}).catch((error) => {console.error(error);});
  • Promise.race 用于处理多个 Promise 实例,只要其中一个 Promise 完成,就会执行 then() 方法:
Promise.race([promise1, promise2]).then((result) => {console.log(result); // 'Promise 1 完成'}).catch((error) => {console.error(error);});

二、async 和 await

*1. async 函数

  • async 关键字用于声明一个异步函数,该函数会隐式地返回一个 Promise 对象:
async function asyncFunction() {return '这是一个 async 函数的结果';
}
  • 调用 asyncFunction() 会返回一个 Promise 对象,可使用 then() 方法来处理结果:
asyncFunction().then((result) => {console.log(result);
});

*2. await 关键字

  • await 关键字只能在 async 函数中使用,它会暂停 async 函数的执行,直到 Promise 被解决或被拒绝:
async function asyncFunction() {let promise = new Promise((resolve, reject) => {setTimeout(() => {resolve('Promise 已解决');}, 1000);});let result = await promise; // 暂停直到 promise 完成console.log(result);
}
asyncFunction();
  • 在这个例子中,await 等待 promise 的解决,然后将结果存储在 result 中并继续执行后续代码。

*3. 错误处理

  • 可以使用 try...catch 语句在 async 函数中处理错误:
async function asyncFunction() {try {let promise = new Promise((resolve, reject) => {setTimeout(() => {reject('Promise 已失败');}, 1000);});let result = await promise;console.log(result);} catch (error) {console.error(error);}
}
asyncFunction();

*4. 结合使用 async 和 await 进行多个异步操作

async function asyncFunction() {try {let result1 = await new Promise((resolve, reject) => {setTimeout(() => {resolve('第一个操作完成');}, 1000);});console.log(result1);let result2 = await new Promise((resolve, reject) => {setTimeout(() => {resolve('第二个操作完成');}, 1000);});console.log(result2);} catch (error) {console.error(error);}
}
asyncFunction();
  • 在上述代码中,使用 await 可以让代码看起来更像同步代码,使异步操作的流程更易于理解和管理。

*5. 优势

  • 简洁性:使用 asyncawait 可以使异步代码看起来更像同步代码,提高代码的可读性和可维护性,避免了大量的 then()catch() 链式调用。
  • 错误处理:使用 try...catch 语句可以更方便地处理异步操作中的错误,使错误处理更直观。

三、总结

  • Promise:是处理异步操作的基础,提供了一种更优雅和灵活的方式来处理异步操作,避免了回调地狱(callback hell),通过状态管理和链式调用让异步代码更易于管理。
  • async 和 await:是对 Promise 的进一步优化,使用 async 声明的函数会返回 Promise,await 可以暂停 async 函数的执行等待 Promise 的结果,让异步代码看起来更像同步代码,大大提高了代码的可读性和可维护性,是现代 JavaScript 中处理异步操作的首选方式。

通过使用 Promise、async 和 await,可以更有效地管理 JavaScript 中的异步操作,提高代码的可读性和可维护性,使复杂的异步操作流程更易于理解和处理。

四、async 函数的调用逻辑

示例代码解析:

async function asyncFunction() {try {let result1 = await new Promise((resolve, reject) => {setTimeout(() => {resolve('第一个操作完成');}, 1000);});console.log(result1);let result2 = await new Promise((resolve, reject) => {setTimeout(() => {resolve('第二个操作完成');}, 1000);});console.log(result2);} catch (error) {console.error(error);}
}
asyncFunction();

当你调用一个 async 函数时,如 asyncFunction(),该函数内部的代码逻辑会被执行,同时它会返回一个 Promise 对象。这与普通函数的调用有一些相似之处,但也有重要的区别。

  • 相似之处

    • 像普通函数一样,调用 asyncFunction() 会触发函数内部代码的执行。
    • 函数会按照其内部的逻辑顺序执行,包括变量声明、条件语句、循环等。
  • 区别

    • async 函数内部可以使用 await 关键字暂停函数的执行,等待 Promise 对象的解析。
    • 函数的返回值会被自动包装在一个 Promise 对象中,即使你在函数内部没有显式地返回一个 Promise

五、代码逻辑的执行顺序

在你提供的 asyncFunction() 代码中,以下是代码的执行顺序:

  1. 调用 asyncFunction(),函数开始执行。
  2. 进入 try 块。
  3. 遇到 await new Promise((resolve, reject) => {...})
    • 这里会创建一个新的 Promise 对象,setTimeout 函数被调用,并且 resolve('第一个操作完成') 将在 1000 毫秒后执行。
    • await 关键字会暂停 asyncFunction() 的执行,等待这个 Promise 的解析。
  4. 一旦第一个 Promise 被解析(即 resolve('第一个操作完成') 被调用):
    • asyncFunction() 会继续执行,result1 被赋值为 '第一个操作完成'
    • console.log(result1) 被调用,输出 '第一个操作完成'
  5. 然后遇到第二个 await new Promise((resolve, reject) => {...})
    • 同样的过程,会等待另一个 Promise 的解析。
  6. 当第二个 Promise 被解析:
    • result2 被赋值为 '第二个操作完成'console.log(result2) 输出 '第二个操作完成'

六、函数的返回值

asyncFunction() 调用会返回一个 Promise 对象。你可以像使用其他 Promise 一样使用 then()catch() 方法:

asyncFunction().then(() => {console.log('asyncFunction 已完成');}).catch((error) => {console.error('出现错误:', error);});
  • 即使 asyncFunction() 内部没有显式地使用 return 语句,它仍然会返回一个 Promise 对象,该对象在函数内部代码全部执行完成后会被解析(如果没有错误发生)。

七、总结

  • 调用 asyncFunction() 会执行函数内部的代码逻辑。
  • 函数内部的 await 关键字会暂停函数的执行,直到 Promise 对象被解析。
  • 函数会隐式地返回一个 Promise 对象,你可以使用 then()catch() 方法处理函数的完成或错误状态。

以下是一个更完整的示例,展示如何使用 asyncFunction() 的返回 Promise

async function asyncFunction() {try {let result1 = await new Promise((resolve, reject) => {setTimeout(() => {resolve('第一个操作完成');}, 1000);});console.log(result1);let result2 = await new Promise((resolve, reject) => {setTimeout(() => {resolve('第二个操作完成');}, 1000);});console.log(result2);return '函数完成';} catch (error) {console.error(error);return '函数出错';}
}asyncFunction().then((finalResult) => {console.log(finalResult); // 输出 "函数完成"}).catch((error) => {console.error(error);});

代码解释

  • asyncFunction() 中的代码会按照正常顺序执行,但会在 await 处暂停,等待 Promise 解析。
  • 最终,asyncFunction() 会返回一个 Promise,你可以使用 then() 来处理最终的结果或使用 catch() 来处理错误。

总之,async 函数的调用会执行内部代码,同时通过 await 可以方便地处理异步操作,并且返回的 Promise 对象允许你使用 then()catch() 来处理最终结果和错误,为处理异步操作提供了一种简洁和直观的方式。

注意事项

  • 确保在 async 函数中使用 await 时,只在 Promise 前使用,否则会导致语法错误。
  • await 只能在 async 函数中使用,不能在普通函数中使用。

相关文章:

AI生成内容——JavaScript中的Promise、async和wait

一、Promise *1. 概念: Promise 是 JavaScript 中处理异步操作的一种对象,它表示一个异步操作的最终完成(或失败)及其结果值。一个 Promise 对象处于以下三种状态之一: Pending(进行中)&#…...

Java基于SSM框架的社区团购系统小程序设计与实现(附源码,文档,部署)

Java基于SSM框架的社区团购系统小程序设计与实现 博主介绍:✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 &#x1f4…...

Git原理与应用(三)【远程操作 | 理解分布式 | 推送拉取远程仓库 | 标签管理】

Git 理解分布式版本控制系统远程仓库新建远程仓库克隆远程仓库向远程仓库推送配置Git忽略特殊文件 标签管理理解标签创建标签操作标签删除标签 理解分布式版本控制系统 我们⽬前所说的所有内容(工作区,暂存区,版本库等等)&#x…...

【esp32小程序】小程序篇02——连接git

一、创建仓库 进入gitee官网,登录(如果没有gitee账号的就自行注册一下)。 点击号-->新建仓库 填写好必填信息,然后点击“创建” 二、微信开发者工具配置 在微信开发者工具打开我们的项目。按下面的步骤依次点击 三、验证 点…...

MongoDB基本操作

一、实验目的 1. 熟悉MongoDB的基本操作,包括CRUD(增加、读取、更新、删除)。 2. 理解MongoDB的文档型数据库特性和Shell的使用。 3. 培养学生通过命令行操作数据库的能力。 4. 强化数据库操作的实际应用能力。 二、实验环境准备 1.…...

Brooks MagnaTran LEAP User Manual 指导半导体机械手

Brooks MagnaTran LEAP User Manual 指导半导体机械手...

【Red Hat8】:搭建DHCP服务器

1、新建挂载文件 2、挂载 3、关闭防火墙 4、搭建yum源 (搭建的时候用vim 自行定义文件名.repo或者是vi 自行定义文件名.repo) 5、安装dhcp-server 6、复制模板文件 dhcpd.conf 是DHCP服务的配置文件,DHCP服务所有参数都是通过修改dhcpd.co…...

JupyterLab 安装以及部分相关配置

安装 JupyterLab pip install jupyter启动 JupyterLab jupyter lab [--port <指定的端口号>] [--no-browser] # --port 指定端口 # --no-browser 启动时不打开浏览器安装中文 首先安装中文包 pip install jupyterlab-language-pack-zh-CN安装完成后重启 JupyterLab 选…...

深圳桂湾公园的花海

工作日的午休时间我经常骑行到桂湾公园&#xff0c;时不时都能碰上一些阿姨问&#xff1a;小伙子你知道桂湾公园的花海在哪里吗&#xff1f;我找了半天了哈。我发现不少找花海的人是从桂湾地铁或前湾地铁下车&#xff0c;然后在偌大的桂湾公园找寻。其实只要定位前海紫荆园就好…...

寒假刷题Day10

一、220. 存在重复元素 III 两种解法&#xff1a;并没有弄懂&#xff0c;待复盘 class Solution { public:bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {set<long> st;for (int i 0; i < nums.size(); i) {auto lb st.lower_…...

【Java-图片存储方案】

Java功能相关文章 一、Minio存储大体量图片 上传到Minio指定路径&#xff0c;前端预览时,需要生成临时访问凭证的URL import io.minio.MinioClient; import io.minio.errors.MinioException; import io.minio.http.Method; import io.minio.GetPresignedObjectUrlArgs; impo…...

机器人传动力系统介绍

以下是对机器人驱动系统的分析、最新科技应用以及世界顶级公司机器人型号使用的技术&#xff1a; 机器人驱动系统分析 液压驱动&#xff1a;利用液体压力来传递动力&#xff0c;通过液压泵将液压油从油箱抽出&#xff0c;送至液压缸&#xff0c;推动活塞运动&#xff0c;进而…...

DDD - 微服务落地的技术实践

文章目录 Pre概述如何发挥微服务的优势怎样提供微服务接口原则微服务的拆分与防腐层的设计 去中心化的数据管理数据关联查询的难题Case 1Case 2Case 3 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服…...

《Vue3 十》Vue 底层原理

命令式编程和声明式编程&#xff1a; 以计时器为例&#xff1a; // 原生 JavaScript 实现计数器&#xff0c;是命令式编程 <div><h1>当前数字&#xff1a;<span class"count"></span></h1><button class"add" click&qu…...

GMM高斯混合聚类算法(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GMM高斯混合聚类算法 matlab2023b语言&#xff0c;一键出图&#xff0c;直接运行 1.代码注释清晰&#xff0c;自行解读容易。 2…输出图例如图所示包括&#xff1a;聚类图(聚类结果图)&#xff0c;协方差矩阵类型…...

【Leetcode 每日一题】2266. 统计打字方案数

问题背景 Alice 在给 Bob 用手机打字。数字到字母的 对应 如下图所示。 为了 打出 一个字母&#xff0c;Alice 需要 按 对应字母 i i i 次&#xff0c; i i i 是该字母在这个按键上所处的位置。 比方说&#xff0c;为了按出字母 ‘s’ &#xff0c;Alice 需要按 ‘7’ 四次…...

多线程杂谈:惊群现象、CAS、安全的单例

引言 本文是一篇杂谈&#xff0c;帮助大家了解多线程可能会出现的面试题。 目录 引言 惊群现象 结合条件变量 CAS原子操作&#xff08;cmp & swap&#xff09; 线程控制&#xff1a;两个线程交替打印奇偶数 智能指针线程安全 单例模式线程安全 最简单的单例&…...

Nginx调优

Nginx 是一个高性能的反向代理服务器和负载均衡器&#xff0c;在处理大量并发请求时表现出色。但是&#xff0c;随着系统负载的增加&#xff0c;Nginx 的性能可能受到多方面的影响&#xff0c;因此进行适当的调优至关重要。以下是 Nginx 调优的几个方向和关键点&#xff1a; 1…...

自定义UITableViewCell

很多时候&#xff0c;我们是不能直接使用系统自带的UITableViewCell&#xff0c;因为自带的比较简单只有一个UIImageView和两个UILabel&#xff0c;假设需要多个UIImageView或者两个以上UILabel&#xff0c;那就需要自定义了。本文就实现如何自定义UITableViewCell。 假设我们现…...

Java 基于微信小程序的原创音乐小程序设计与实现(附源码,部署,文档)

大家好&#xff0c;我是stormjun&#xff0c;今天为大家带来的是Java实战项目-基于微信小程序的原创音乐小程序设计与实现。该系统采用 Java 语言 开发&#xff0c;MySql 作为数据库&#xff0c;系统功能完善 &#xff0c;实用性强 &#xff0c;可供大学生实战项目参考使用。 博…...

MySQL —— 事务

概念 事务把组SQL语句打包成为个整体&#xff0c;在这组SQL的执行过程中&#xff0c;要么全部成功&#xff0c;要么全部失败。 这组SQL语句可以是条也可以是多条。 ACID 特性 原子性 Atomicity(原子性)&#xff1a;一个事务中的所有操作&#xff0c;要么全部成功&#xff0…...

【大模型】ChatGPT 高效处理图片技巧使用详解

目录 一、前言 二、ChatGPT 4 图片处理介绍 2.1 ChatGPT 4 图片处理概述 2.1.1 图像识别与分类 2.1.2 图像搜索 2.1.3 图像生成 2.1.4 多模态理解 2.1.5 细粒度图像识别 2.1.6 生成式图像任务处理 2.1.7 图像与文本互动 2.2 ChatGPT 4 图片处理应用场景 三、文生图操…...

SpringBoot注入配置文件application.properties中的信息

问题&#xff1a;将可能会变动的配置信息硬编码在代码中&#xff0c;在修改时难以定位&#xff0c;且过于繁琐&#xff0c;怎么办&#xff1f; 解决&#xff1a;自定义application.properties配置文件中的信息&#xff0c;注意严格遵循ab的形式&#xff0c;不要加引号&#xf…...

大数据,Hadoop,HDFS的简单介绍

大数据 海量数据&#xff0c;具有高增长率、数据类型多样化、一定时间内无法使用常规软件工具进行捕捉、管理和处理的数据集 合 大数据的特征: 4V Volume : 巨大的数据量 Variety : 数据类型多样化 结构化的数据 : 即具有固定格式和有限长度的数据 半结构化的数据 : 是…...

第15章:Python TDD应对货币类开发变化(二)

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

黑马点评之导入初始项目(java)

&#xff01;&#xff01;&#xff01;由于我一开始是在网盘上下载的资源&#xff0c;后面忙活半天&#xff0c;发现代码是不完整的&#xff0c;才知道需要在github上面拉取初始代码。 然后第二点是我的本地环境是jdk21&#xff0c;但是他原本的代码为jdk8&#xff0c;所以在换…...

Erlang语言的语法糖

Erlang语言的语法糖&#xff1a;简化编程的灵活工具 Erlang是一种功能强大的编程语言&#xff0c;最初由爱立信&#xff08;Ericsson&#xff09;为电信系统开发。它以其高并发性、容错性和分布式特性而闻名&#xff0c;特别适合构建实时系统。然而&#xff0c;Erlang的语法相…...

数据库基础知识:记录、表、字段、数据类型、约束、主键、外键、规范化、索引、序列

数据库是由一个或多个有组织的数据集合组成&#xff0c;而数据库管理系统&#xff08;DBMS&#xff09;是操作数据库的软件&#xff0c;包括很多人本科上课学过的SQL Server&#xff0c;现在常用的MySQL、Postgresql等&#xff0c;用于提供数据的存储、访问、运行和维护等。学习…...

Centos 8 交换空间管理

新增swap 要增加 Linux 系统的交换空间&#xff0c;可以按照以下步骤操作&#xff1a; 1. 创建一个交换文件 首先&#xff0c;选择文件路径和大小&#xff08;例如&#xff0c;增加 1 GB 交换空间&#xff09;。 sudo fallocate -l 1G /swapfile如果 fallocate 不可用&…...

迈向 “全能管家” 之路:机器人距离终极蜕变还需几步?

【图片来源于网络&#xff0c;侵删】 这是2024年初Figure公司展示的人形机器人Figure 01&#xff0c;他可以通过观看人类的示范视频&#xff0c;在10小时内经过训练学会煮咖啡&#xff0c;并且这个过程是完全自主没有人为干涉的&#xff01; 【图片来源于网络&#xff0c;侵删】…...

Data Filtering Network 论文阅读和理解

目录 一、TL&#xff1b;DR 二、Introduction 2.1 apple的结论 2.2 业界做法&#xff1a; 2.3 我们的做法&#xff08;Apple&#xff09; 2.4 如何获取好的DFN 三、未完待续&#xff08;这周出去购物了&#xff0c;下周继续补充&#xff09; 一、TL&#xff1b;DR 核心…...

KMP算法

KMP算法详解 KMP&#xff08;Knuth-Morris-Pratt&#xff09;算法是一种用于在大串中寻找小串的字符串匹配算法。它通过在字符串匹配过程中避免不必要的重复比较&#xff0c;显著提高了效率。KMP算法的核心思想是利用字符串中已经匹配的部分信息来优化匹配过程&#xff0c;减少…...

分类操作,可以通过引入对 Bean 的前置和后置处理

深入理解 BeanPostProcessor BeanPostProcessor&#xff0c;它主要有两个方法before和after的执行阶段&#xff0c;主要就是明白方法是在谁的前面在谁的后面执行 在你的idea中创建一个项目&#xff0c;你可以通过实现Ordered这个接口来&#xff0c;这样就可以让其实现类去实现…...

【2024 年度总结】从小白慢慢成长

【2024 年度总结】从小白慢慢成长 1. 加入 CSDN 的契机2. 学习过程2.1 万事开头难2.2 下定决心开始学习2.3 融入技术圈2.4 完成万粉的目标 3. 经验分享3.1 工具的选择3.2 如何提升文章质量3.3 学会善用 AI 工具 4. 保持初心&#xff0c;继续前行 1. 加入 CSDN 的契机 首次接触…...

无数据库开源Wiki引擎WikiDocs

简介 什么是 WikiDocs &#xff1f; WikiDocs 是一个无数据库的开源 Markdown 文件平面 Wiki 引擎。它旨在提供一个简单、灵活且易于使用的 Wiki 解决方案&#xff0c;允许用户创建和管理文档而无需依赖传统数据库。 主要特点 无数据库&#xff1a;使用纯文本文件存储数据&am…...

【算法】字符串:高精度计算之加法、乘法(数组模拟)

目录 1、高精度算法是什么&#xff1f; 2、易错点 高精度加法&#xff1a; 高精度减法&#xff1a; 高精度乘法&#xff1a; 高精度除法&#xff1a; 3、高精度加法 思路&#xff1a; 例题 4、高精度乘法 思路 例题 参考文章 高精度算法——数组模拟&#xff08;加、减…...

4.JoranConfigurator解析logbak.xml

文章目录 一、前言二、源码解析GenericXMLConfiguratorlogback.xml解析通过SaxEvent构建节点model解析model节点DefaultProcessor解析model 三、总结 一、前言 上一篇介绍了logback模块解析logback.mxl文件的入口, 我们可以手动指定logback.xml文件的位置, 也可以使用其它的名…...

JavaWeb开发(十六)实战-生鲜后台管理系统(三)BeanUtils介绍、Servlet的抽取

1. 生鲜后台管理系统-BeanUtils的使用 1.1. BeanUtils介绍 BeanUtils 是 Apache commons组件的成员之一&#xff0c;主要用于简化JavaBean封装数据的操作。它可以给JavaBean封装一个字符串数据&#xff0c;也可以将一个表单提交的所有数据封装到JavaBean中。使用第三方工具&am…...

人形机器人将制造iPhone!

前言 优必选机器人和富士康通过一项突破性的合作伙伴关系&#xff0c;正在将先进的人形机器人&#xff08;如Walker S1及其升级版Walker S2&#xff09;整合到制造流程中&#xff0c;以改变iPhone的生产方式。这一合作旨在通过提升机器人能力、优化工作流程以及实现更智能的自动…...

Oracle 深入学习 Part 14:Managing Password Security and Resources(管理密码安全性和资源)

Profiles Profile 是一个以名称标识的集合&#xff0c;用于管理 密码 和 资源限制。 每个用户都对应一个profiles&#xff0c;可以通过 CREATE USER 或 ALTER USER 命令分配给用户。 Profiles 可以启用或禁用。 Profiles 可以关联到默认的 DEFAULT Profile。 密码管理&…...

202209 青少年软件编程等级考试C/C++ 二级真题答案及解析(电子学会)

第 1 题 统计误差范围内的数 统计一个整数序列中与指定数字m误差范围小于等于X的数的个数。 时间限制:5000 内存限制:65536 输入 输入包含三行: 第一行为N,表示整数序列的长度(N <= 100); 第二行为N个整数,整数之间以一个空格分开; 第三行包含2个整数,为指定…...

qt中透明度表示

透明度的表示方法 在 Qt 样式表中&#xff0c;使用 rgba 或 argb 颜色表示法时&#xff0c;透明度通常用一个介于 0 和 1 之间的小数表示。 rgba 表示法&#xff1a;rgba(red, green, blue, alpha)&#xff0c;其中 alpha 是透明度&#xff0c;例如 rgba(255, 0, 0, 0.5) 表示…...

Mybatis 进阶 / Mybatis—Puls (详细)

目录 一.动态SQL 1.1标签 1.2 标签 1.3标签 1.4标签 1.5标签 1.6标签 mybatis总结&#xff1a; 二.Mybatis-Puls 2.1准备工作 2.2CRUD单元测试 2.2.1创建UserInfo实体类 2.2.2编写Mapper接⼝类 2.2.3 测试类 2.3 常见注解 2.3.1TableName 2.3.2TableField 2.4打印日…...

opencv在图片上添加中文汉字(c++以及python)

opencv在图片上添加中文汉字&#xff08;c以及python&#xff09;_c opencv绘制中文 知乎-CSDN博客 环境&#xff1a; ubuntu18.04 desktopopencv 3.4.15 opencv是不支持中文的。 这里C代码是采用替换原图的像素点来实现的&#xff0c;实现之前我们先了解一下汉字点阵字库。…...

js截取video视频某一帧为图片

1.代码如下 <template><div class"box"><div class"video-box"><video controls ref"videoRef" preload"true"src"https://qt-minio.ictshop.com.cn:9000/resource-management/2025/01/08/7b96ac9d957c45a…...

Observability:最大化可观察性 AI 助手体验的 5 大提示(prompts)

作者&#xff1a;来自 Elastic Zoia_AUBRY 在过去三年担任客户工程师期间&#xff0c;我遇到了数百名客户&#xff0c;他们最常问的问题之一是&#xff1a;“我的数据在 Elastic 中&#xff1b;我该如何利用它获得最大优势&#xff1f;”。 如果这适用于你&#xff0c;那么本…...

HDFS的架构优势与基本操作

目录 写在前面一、 HDFS概述 1.1 HDFS简介1.2 HDFS优缺点 1.2.1 优点1.2.2 缺点 1.3 HDFS组成架构1.4 HDFS文件块大小 二、HDFS的Shell操作&#xff08;开发重点&#xff09; 2.1 基本语法2.2 命令大全2.3 常用命令实操 2.3.1 上传2.3.2 下载2.3.3 HDFS直接操作 三、HDFS的AP…...

hive表修改字段类型没有级连导致历史分区报错

一&#xff1a;问题背景 修改hive的分区表时有级连概念&#xff0c;指字段的最新状态&#xff0c;默认只对往后的分区数据生效&#xff0c;而之前的分区保留历史元数据状态。好处就是修改语句的效率很快&#xff0c;坏处就是如果历史分区的数据还有用&#xff0c;那就回发生分…...

023:到底什么是感受野?

本文为合集收录&#xff0c;欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请查看这里。 在前面介绍卷积算法时&#xff0c;一直在强调一个内容&#xff0c;那就是卷积算法的运算过程是—— 卷积核在输入图像上滑动扫描的过程。 在每一次扫描时&#xff0c;可以…...

GoFrame g.* 方法和数据类型

GoFrame g.* 方法和数据类型 GoFrame 框架通过 g.* 方法提供了一系列常用的数据类型和对象获取方法。这个模块采用强耦合设计&#xff0c;目的是为开发者提供便捷的类型和对象调用方式。 使用方式 import "github.com/gogf/gf/v2/frame/g"数据类型 基础类型别名 …...