代码运行机制(简述)

代码运行机制

1 ip协议=>dns解析 (找到你要找的服务器),发送请求,三次握手 ,建立连接开始交互
2 页面渲染
3垃圾回收
(1).
UDP协议:
面向无连接,面向无对象,不需要正式传递数据之前就连接双方,udp 只负责数据包的搬运,不保证数据包的有序和丢失。
面向无对象:不需要三次握手.
应用场景:纪实微信视频通话–用tcp会有延迟,不合适。

#tcp协议(有拥塞控制,不会拥塞)
要建立连接传输,传输过程有各种算法,保证数据的可靠性,没有udp高效

三次握手:
1客户端向服务端发送连接请求,
2服务端向客户端发送请求应答
3客户端接受到应答后,向服务端发送确认报文(确认建立了连接)
在这里插入图片描述

为什么tcp建立连接为什么需要三次就可以,明明二次就可以?

客户端发送连接A,因为网络问题没有到达服务端,那么tcp会启动超时重传机制,从新发送一个连接请求b,当b顺利到达后,建立连接。当数据传输完以后断开连接,这是a才到达服务器,服务端以为客户端又想建立连接,于是服务端给予响应,但此时客户端已经关闭,服务端一直等待,造成资源浪费。

(2)页面渲染(代码自上而下执行,js引入文件放在最后加快渲染时间)
浏览器内核分为浏览器渲染引擎和js执行引擎
浏览器渲染引擎:
1 浏览器接收到html文件
词法分析 =>标记(0101010字符串一段一段的代码)=>node节点(thml标签)=>Dom树

2 浏览器接收到css文件
步骤同上=>CSSOM树

3渲染树
dom树+css树=render树
在这里插入图片描述
什么情况下会阻塞渲染?
1无意的的标签越多,cssom树生成更加费时间,render渲染开始时间更晚
2html css
等js执行完才能执行html
解决

async异步 页面执行完才运行。defer并行,跟html一起运行。

js执行引擎执行js代码:
js执行机制:
代码–>预编译(编译环境,创建执行上下文)–>执行
执行代码时内存:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
1 当js执行全局代码,一定会编译全局代码并创建全局执行上下文,并且全局就只有一份
2当一个函数被调用,函数体内会被编译,创建函数执行上下文,函数执行结束以后,创建的函数执行上下文会被销毁

引用类型一般比较大,所以放在堆中。一是为了防止栈溢出,方便栈之间的联系切换,查找消耗小,效率高。虽然造成回收机制消耗更大,但是相对与栈的消耗,还是比较好的。

变量环境用来存放变量和函数,let和const放在词法作用域,用来区分;

v8垃圾回收机制-----新生区和老生区
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值