浅谈异步与同步

[ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042 [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042 Django 组件存在 SQL 注入漏洞,该漏洞是由于对 QuerySet.order_by()中用户提供数据的过滤不足,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 SQL 注入攻击,最终造成服务器敏感信息泄露。 阅读详情

首先我们要理解什么是同步和异步

同步:就是顺序执行的代码,调用这段代码我能直接获取到结果的就是同步

异步:就是稍后执行的代码,调用这段代码我可能没办法立即获取执行结果,需要通过别的操作才可以得到结果


但是JavaScript是以单线程的方式运行的,也就是同一时间只能进行一件事,试想一下,假如javascript是多线程的,如果线程1要删除一个DOM元素,节点2要让DOM元素运动起来并且显示,那么浏览器怎么知道你想要干什么,所以在诞生的时候选择了单线程

Runtime:


Javascript会将正在执行的任务放到栈(stack)中(特点:先进后出);(栈就是主线程)

Heap(堆)中保存着引用类型值,例如对象

Queue(队列) 任务队列由一系列待处理的任务组成,每个任务都有相对应的函数。当栈为空时则会从任务队列中取出一个任务处理。(特点:先进先出)

也就是说

在处理任务的时候,会先去处理主线程中的任务,然后等到主线程为空执行任务队列中的事件


那么说到这里必须说一说JS实现异步的一种机制:Event Loop (图片摘自阮一峰的Event Loop)


如果用户触发了一个事件,那么浏览器会将事件处理函数加入queue,当stack为空时,就去取出queue中的第一个任务

对于定时器,会在到达时间点时形成一个事件,定时器与其他事件不同的是靠事件循环不断检查系统时间来判断是否达到临界点来判断是否产生事件


来看几道小面试题

for(var i=0;i<5;i++){
      setTimeout(function(){
          console.log(i);
      },1000);
    }

我们同步创建了5个延时器,同步操作不会等待异步执行,所以在延时器循环已经执行完了,i的值是5,那么就会瞬间打印出5个5,这也就证明了异步的并发执行


setTimeout(function(){
         console.log(1);
      });
console.log(2);
延时器即使设置时间为0 他也是异步操作,所以结果是先输出 2 后输出1 


常见的异步代码:Ajax,时间,定时器,Promise

老一代的程序猿应该都经历过Callback Hell 可能因为要等待上一个异步操作返回数据,所以要一层回调套一层回调

所以ES6出现了Promise对象

new Promise((success,error)=>{
          success(data); //成功回调
          //error(data)  //失败回调
      }).then(callback);//.catch(callback)
成功回调和失败回调只能执行一个 要么成功要么失败

失败对应catch();

有了Promise对象 我们就可以使得异步操作同步执行了

function set(val,time){
          return new Promise((success)=>{
                setTimeout(()=>{
                console.log(val)
                success();
            },1000*time);
          })
      }
      var start=async function(){  //利用了es7的async function 
          await set("hello",3);    //await 等待这个执行完再执行下一个操作
          await set("world",1);
      }
      start();

或者我们封装多个Promise

function deferOne(){
          return new Promise((success)=>{
            setTimeout(()=>{
                console.log(1);  
                success()
            },3000)
          })
      }
      function deferTwo(){
          return new Promise((success)=>{
            setTimeout(()=>{
                console.log(2);  
                success()
            },1000)
          })
      }
      new Promise((success)=>{
          success();
      }).then(deferOne).then(deferTwo);
核心就是封装多个promise
物流分拣YOLO实战:YOLO26 OBB+YOLOv8多尺度融合,不规则包裹分拣效率提升40%(附训练+部署代码) 在物流分拣的工业场景中,模型的检测精度、推理速度、部署友好性本次基于YOLO26 OBB+YOLOv8多尺度融合打造的物流分拣视觉检测方案,精准解决了工业场景中不规则包裹的旋转检测、多尺度包裹的漏检问题,最终实现分拣效率提升40%,检测准确率提升至95%以上,且模型在边缘设备上的推理帧率稳定35FPS+,完全适配物流分拣的工业落地需求。 阅读详情

相关推荐

SAP入门技术分享四:模块化程序

SAP入门技术分享三:模块化程序

ITxiaoangzai的博客 1152

异步与同步

promise与异步 Promise是异步编程的一种解决方案 回调可以称异步。 注意:Array上的那些函数,虽然需要回调函数,但它不是异步。所以这些不用Promise处理。 1、同步 (1)使用alert介绍同步阻塞(2)使用函数计算两个数的和调用后用变量接收 2、异步 常见的应用场景:(1)网络请求(2)读取文件(3)js中的事件函数就是非常典型的异步表现形式。 异步的特点:①都有一个延迟时间 ②不影响其他代码运行 同步和异步的区别: 同步:没有回调,函数调用直接用等号赋值,如果程

m0_46186102的博客 485

Docker篇——Docker常用命令大全!史上最全面的Docker命令,涵盖常规命令、镜像基本命令、容器基本命令以及常用其他命令,一篇文章速通!

本篇文章介绍的关于DOcker的命令非常全面,Docker常见的命令介绍完毕,涉及到的命令比较繁杂,希望大家可以收藏并坚持学习。后续还会持续更新相关技术点,敬请期待

我热爱学习,也乐于分享。无论是科技前沿的洞见,还是生活中的小技巧,我都会在这里与你分享。我相信,知识就是力量,而分享则能让这份力量得到更好的传递。 5746

Task.Delay() 和 Thread.Sleep() 区别

一、 1、Thread.Sleep 是同步延迟,Task.Delay异步延迟。 2、Thread.Sleep 会阻塞线程,Task.Delay不会。 3、Thread.Sleep不能取消,Task.Delay可以。 4.Task.Delay() 比 Thread.Sleep() 消耗更多的资源,但是Task.Delay()可用于为方法返回Task类型;或者根据CancellationTo...

zxf347085420的博客 7833

ChatGPT启蒙之旅:弟弟妹妹的关键概念入门

本文主要介绍了ChatGPT启蒙之旅:弟弟妹妹的关键概念探险,希望能对初学大模型的同学们有所帮助。 文章目录 1. 背景 2. GPT是个什么样的人? 3. GPT使用的核心思维 4. GPT使用的场景介绍

herosunly的博客 16万+

〔重庆理工大学〕计算机组成原理课设报告--16位单周期CPU设计

本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。(1)Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CGXFC5C6F27C7N 芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CGXFC5C6F27C7N是Starter工具箱的重要组件。(2)测试台包含在测设备(DUT)和用于仿真的模拟输入。

Pretty Boy Fox的博客 1066

JavaScript 异步编程

异步的概念 异步(Asynchronous, async)是与同步(Synchronous, sync)相对的概念。 在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。 简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效果更高: 以上是关于异步的概念的解释,接下来我们通俗地解释一下异步:异步就是从主线程发射一个子

John_jian_yo的博客 2702

高熵合金AlCoCrFeNi/金刚石摩擦案例代码

本文介绍金刚石与高熵合金AlCoCrFeNi摩擦的案例。 在之前的文章中,介绍过使用fix indent命令实现虚拟球的摩擦,本文介绍使用金刚石实体球实现高熵合金摩擦的方法。 主要的模拟过程如下: (1)基体建模 建使用原子替换法获得高熵合金初始模型,升温到3000K驰豫后,冷却至300K,获得平衡组织。 (2)摩擦球建模 在高熵合金平衡组织的模型中添加金刚石摩擦球,使用change_box命令扩大box尺寸,添加金刚石摩擦球,并设置混合力场。 (3)摩擦过程 摩擦球下压一定深度后,沿y方向进行摩擦,摩擦

lammps_jiayou的博客 2900

同步(Synchronous)和异步(Asynchronous)

同步异步是啥?打个比方: 定义:同步和异步关注的是消息通信机制(synchronous communication/ asynchronous communication)。同步,就是调用某个东西是,调用方得等待这个调用返回结果才能继续往后执行。异步,和同步相反 调用方不会理解得到结果,而是在调用发出后调用者可用继续执行后续操作,被调用者通过状体来通知调用者,或者通过回掉函数来处理...

weixin_30477797的博客 1490

3. Matérn协方差模型与随机偏微分方程

对应的高斯马尔可夫随机场 (GMRF)可以通过使用某种随机偏微分方程(SPDE)明确构造,当由高斯白噪声驱动时,随机偏微分方程的解是具有 Matérn 协方差函数的高斯场(GF)

weixin_40614311的博客 1745

【ARM AMBA5 CHI 2 -- CHI 链路层详细介绍 】

目前有六个版本的 CHI 协议,CHI-A 是 CHI 协议的第一个版本。它提供了一个传输层,具有减少拥塞的功能。新通道、CHI 术语和组件命名的定义;请求、监听过滤器和缓存状态转换的示例;事务排序、独占访问和分布式虚拟内存(DVM)操作的规则;CHI-B 问题扩展了 CHI-A,但不能直接向后兼容 CHI-A。更大的物理地址宽度;原子事务;DVM 的 VMID 扩展;通道字段、事务结构和可靠性、可用性和可维护性(RAS)特性的描述;

CodingCos的博客 2535

同步与异步

文章目录同步与异步的介绍synchronized 的介绍synchronized 的使用 同步与异步的介绍 同步(synchronized):同步是指一个进程在执行某个请求的时候,如果该请求需要一段时间才能返回信息,那么这个进程会一直等待下去,直到收到返回信息才继续执行下去。 异步(Asynchronous):异步是指进程不需要一直等待下去,而是继续执行下面的操作,不管其他进程的状态,当有信息返回...

LTC_1234的博客 7015

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

浅谈同步与异步

关于同步: 同步其实就是相当于是排队,简单来说就是你(客户端)给电脑(服务端)发送一个请求,需要等到电脑给你回应之后你才可以去发送下一个请求,通俗点来讲这个过程就是我们所说的“卡”,其次是大多数时候电脑给你回应之后都会加载页面来让你看到回应的信息,这时候电脑需要加载整个页面。 关于异步: 其实异步也是很好理解的,相当于是在两条线上,各走各的,互不影响。异步就是你(客户端)给电脑(服务端)发送一个...

Antelope的博客 310

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

浅谈阻塞与非阻塞、同步与异步

本文主要介绍了IO操作中的阻塞/非阻塞和同步/异步概念。阻塞IO会改变线程状态直到数据就绪,而非阻塞IO通过返回值判断数据状态。同步IO需要请求方自己完成数据读写,而异步IO由内核完成并通知请求方。作者以Linux的recv函数为例,详细说明了不同IO模式的处理方式,并指出阻塞和非阻塞都属于同步IO,只有使用特殊API才是异步IO。

2302_80551020的博客 585

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

浅谈python异步函数与同步函数

python 中的异步函数与同步函数各自的特点及使用场景

wamp0001的博客 760

浅谈js中的同步与异步

     大纲1. Javascript的单线程2. Javascript中的异步原理2.1. 两组概念2.2. Javascript中的异步3. 事件和任务队列3.1. EventLoop的解释4. Javascript中的定时器4.1. 定时器的时间精度问题4.2. setTimeout(fn, 0)的理解4.3. 定时器的区别最近心血来潮,准备整理一下Javascript中有关异步编程方面的...

luomanqshijie的博客 556

浅谈同步与异步,以及多线程

1.同步与异步     我们在开发过程中肯定对异步,同步这两个词很熟悉,那么同步与异步到底是什么意思?他们的区别在哪里呐?      1.1:简单来说同步就是线性相关的,异步线性无关,      1.2:同步:假如有两个方法依次A(),B(),同步意思就是A()执行完成后再执行B();等程序有响应或返回结果后再执行下一步      1.3:  异步:同上,有可能在A()方法未执行完成就执行...

ZyClient的博客 407

Linux服务器编程——浅谈同步IO与异步IO的区别

0 前言 Linux网络编程中经常出现同步IO和异步IO这对概念。遗憾是的,在这之前我从没找到一个关于这两个概念的清晰定义和理解。今找到一点这方面的材料,特分享之。 在解释二者区别之前,先提出一个前置知识,也即同步IO和异步IO的场景: 在网络数据传输中,Linux内核进程将TCP/UDP等传输层协议传输来的数据首先存放在内核的内核空间(内核缓冲区)。用户应用进程根据需要或事件驱动,向内核空间发起IO请求,内核进程需要在内核空间(内核缓冲区)中完成数据IO的一系列准备工作(如果此时内核缓冲区中没有数据,内核

高自强的博客 2320

NIO详解(二): BIO 浅谈 同步 异步与阻塞 非阻塞

在我们了解Java NIO/BIO的网络通信之前,我们先了解一下常用的阻塞/非阻塞模型以及同步/异步的概念 一、阻塞和非阻塞 从简单的开始,我们以经典的读取文件的模型举例。(对操作系统而言,所有的输入输出设备都被抽象成文件。)在发起读取文件的请求时,应用层会调用系统内核的I/O接口。 如果应用层调用的是阻塞型I/O,那么在调用之后,应用层即刻被挂起,一直出于等待数据返回的状态,直到系统内核从...

Master-TJ的个人博客 6429

浅谈linux前台进程与后台进程同步异步执行的理解

linux终端输入一条命令,创建一个子进程运行这条命令,在这条命令进程执行完之前,终端shell都无法接收新的一条命令;应该是概念混淆了,这里linux进程异步的意思,就单纯的字面意思,时间不一致,进程与shell进程不能在同一时间运行,故shell进程在前台进程运行时不能执行下一命令。同步,程序的执行顺序和任务的排列顺序是一致的、同步的,所以后一个任务要等待前一个任务结束,然后再执行。同理,与shell同步运行的,用户在它完成前可以继续在前台执行下一条命令的进程为后台进程。

ReaF_star的博客 814

Js异步回调java_浅谈js文件引用方式及其同步执行与异步执行

任何以appendChild(scriptNode) 的方式引入的js文件都是异步执行的 (scriptNode 需要插入document中,只创建节点和设置 src 是不会加载 js 文件的,这跟 img 的与加载不同 )html文件中的标签中的代码或src引用的js文件中的代码是同步加载和执行的html文件中的标签中的代码使用document.write()方式引入的js文件是异步执行的htm...

weixin_34379088的博客 271

浅谈python异步IO,同步IO,线程与进程~

主线程下的线程之间是可以通信的,但是父进程下的子进程之间不能主动通信,但是子进程想要实现通信也是可以的,可以选择折中的方法来实现,比如multiprocessing.Queue,用法与线程中的queue基本一致,直接上例子: import threading from multiprocessing import Process,Queue import time def thre(q...

weixin_30448603的博客 296

python异步和进程_浅谈python异步IO,同步IO,线程与进程~

主线程下的线程之间是可以通信的,但是父进程下的子进程之间不能主动通信,但是子进程想要实现通信也是可以的,可以选择折中的方法来实现,比如multiprocessing.Queue,用法与线程中的queue基本一致,直接上例子:importthreadingfrom multiprocessing importProcess,Queueimporttimedefthre(qq):qq.put([1,'...

weixin_34236334的博客 157

java拼接js并执行_java相关:浅谈js文件引用方式及其同步执行与异步执行

java相关:浅谈js文件引用方式及其同步执行与异步执行发布于 2020-4-3|复制链接下面小妖就为大家带来一篇浅谈js文件引用方式及其同步执行与异步执行。小妖觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小妖过来看看吧任何以appendChild(scriptNode) 的方式引入的js文件都是异步执行的 (scriptNode 需要插入document中,只创建节点和设置 src...

weixin_39638708的博客 255

引用服务器js文件写法,浅谈js文件引用方式及其同步执行与异步执行

任何以appendChild(scriptNode) 的方式引入的js文件都是异步执行的 (scriptNode 需要插入document中,只创建节点和设置 src 是不会加载 js 文件的,这跟 img 的与加载不同 )html文件中的标签中的代码或src引用的js文件中的代码是同步加载和执行的html文件中的标签中的代码使用document.write()方式引入的js文件是异步执行的htm...

weixin_39977586的博客 507

浅谈ajax异步和同步加载的区别

浅谈ajax异步和同步加载的区别2017年03月16日 20:26:00阅读数:5310 说简单点,ajax默认是异步加载的,也就是说第一个fun请求数据时,数据还未返回时便开始执行第二个fun了,如果将其设置为同步请求,则会等第一个function执行完后才会加载第二个function了异步请求:var flag=true;$...

f45056231p的博客 1758
上一篇: http与https
Mccree1997
博客等级 码龄9年 8粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值