1、对webpack的理解
webpack是一个模块打包工具,你可以使用webpack管理你的模块依赖,并编译出模块所需要的静态文件。它能够很好的管理、打包web开发中所用到的HEML、JavaScript、css以及各种静态文件(图片、字体等),让开发过程更加高效。对于不同类型的资源,webpack有对应的模块加载器。webpack模块打包器会分析模块间的依赖关系,最后生成优化且合并后的静态资源
webpack的两大特色:
①、code splitting(可以自动完成)
②、loader 可以处理各种类型的静态文件,并且支持串联操作
webpack是以commonJs的形式来书写脚本的,但对AMD/CMD的支持也很全面,方便旧项目进行代码迁移
webpack具有requireJs和browserify的功能,但仍有很多自己的新特性
①、对commonJs、AMD、ES6的语法做了兼容
②、对js、css、图片等资源文件都支持打包
③、串联式模块加载器以及插件机制,让其具有更好的。灵活性和扩展性,例如提供对coffeeScript、ES6的支持
④、有独立的配置文件webpack.config.js
⑤、可以将代码切割成不同的chunk,实现按需加载,降低了初始化的时间
⑥、支持SourceUrls和SourceMaps,易于调试
⑦、具有强大的plugin接口,大多是内部插件,使用起来比较灵活
⑧、webpack使用异步IO并具有多级缓存,这使得webpack很快且在增量编译上更加快
2、说说TCP传输的三次握手四次挥手策略
为了准确无误地把数据送达目标处,TCP协议采用了三次握手策略。用TCP协议把数据包送出去后,TCP不会对传送 后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志:SYN和ACK。
发送端首先发送一个带SYN标志的数据包给对方。
接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。
最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。
若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
断开一个TCP连接则需要“四次握手”:
1) 第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。
2)第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
3) 第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
4)第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。