2020-09-04

tech2025-10-21  4

vue的双向绑定原理

 vue.js 则是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

1.实现一个监听器Observer,用来劫持并监听所有属性,如果有变动的,就通知订阅者。

2.实现一个订阅者Watcher,可以收到属性的变化通知并执行相应的函数,从而更新视图。

3.实现一个解析器Compile,可以扫描和解析每个节点的相关指令,并根据初始化模板数据以及初始化相应的订阅器。


1、线程和进程的区别?

  1、进程是一段正在执行的程序,是资源分配的基本单元,而线程是CPU调度的基本单元。   2、进程间相互独立进程,进程之间不能共享资源,一个进程至少有一个线程,同一进程的各线程共享整个进程的资源(寄存器、堆栈、上下文)。   3、线程的创建和切换开销比进程小。


TCP 是面向连接的,UDP 是面向无连接的UDP程序结构较简单TCP 是面向字节流的,UDP 是基于数据报的TCP 保证数据正确性,UDP 可能丢包TCP 保证数据顺序,UDP 不保证

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.

 

四次挥手:

第一次挥手:客户端A发送一个FIN.用来关闭客户A到服务器B的数据传送

第二次挥手:服务器B收到这个FIN. 它发回一个ACK,确认序号为收到的序号+1。和SYN一样,一个FIN将占用一个序号

第三次挥手:服务器B关闭与客户端A的连接,发送一个FIN给客户端A

第四次挥手:客户端A发回ACK报文确认,并将确认序号设置为序号加1

 

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?

答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。


 

事件捕获(event capturing): 当鼠标点击或者触发dom事件时(被触发dom事件的这个元素被叫作事件源),浏览器会从根节点到事件源(由外到内)进行事件传播。

事件冒泡(dubbed bubbling):事件冒泡刚好相反,事件源到根节点(由内到外)进行事件传播。

 

 

// 添加请求拦截器 axios.interceptors.request.use(function (config) {     // 在发送请求之前做些什么     return config;   }, function (error) {     // 对请求错误做些什么     return Promise.reject(error);   });   // 添加响应拦截器 axios.interceptors.response.use(function (response) {     // 对响应数据做点什么     return response;   }, function (error) {     // 对响应错误做点什么     return Promise.reject(error);   });

 


箭头函数 this指向其上下文,普通函数的 this 指向调用它的对象箭头函数相当于匿名函数,简化了函数定义,不能作为构造函数,也不能创建实例。 var fun = (x,y) => { return x*y }; var a = new fun(); //报错:fun is not a constructor 箭头函数不能绑定 arguments,箭头函数通过 call(), apply() 调用函数时,只传参,不改变this 指向箭头函数没有原型属性。

地址栏输入url,

要通过dns解析(浏览器是不能识别url地址的,需解析成ip地址),返回相对应的IP地址,建立tcp连接,(tcp三次握手)发送Http请求,服务器进行处理并返回Http报文,浏览器渲染页面,断开连接(tcp四次挥手)

二、HTTP 与 HTTPS  的区别

1、HTTPS  协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前网易官网是http,而网易邮箱是 https 。)

2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

最新回复(0)